FML 闭包数据库
用闭包改写了一下,倒是可以用
#!/usr/bin/python
# coding:cp936
# CopyRights 2012 Adou XD , All Rights Reserved .
import sqlite3
dbname = 'fmldb.db'
def dbnc(func):
def wrapper(*args,**kw):
global con,cur
con = sqlite3.connect(dbname)
cur = con.cursor()
result = func(*args,**kw)
cur.close()
con.close()
return result
return wrapper
@dbnc
def createDb():
'''create the blog datebase'''
cur.execute('create table if not exists fmls (id integer primary key autoincrement,self.content text)')
con.commit()
@dbnc
def getFmls():
'''get all the fmls'''
cur.execute('select * from fmls')
allfmls = cur.fetchall()
return allfmls
@dbnc
def getFml(id):
'''get fml by id'''
cur.execute( "select * from fmls where id=%d" % id )
blogbyid = cur.fetchone()
return blogbyid
@dbnc
def inFmldb(story):
'''get fml by id'''
cur.execute( "select count(*) from fmls where self.content='%s'" % (story) )
isthere = cur.fetchone()
if isthere[0]==0 :
return False
else :
return True
@dbnc
def newFml(newstory):
'''add a new fml'''
result = cur.execute( "insert into fmls (self.content) values ('%s')" % (newstory) )
con.commit()
return result
@dbnc
def delById(idnum):
'''delete fml by id'''
result = cur.execute( "delete from fmls where id=%d" % idnum )
con.commit()
return result
@dbnc
def delBycontent(story):
'''delete fml by id'''
result = cur.execute( "delete from fmls where self.content=%s" % story )
con.commit()
return result
if __name__ == "__main__" :
'''test the database'''
#createDb()
allfmls = getFmls()
#allfmls = getFml(55)
#allfmls = [ allfmls ]
for num,content in allfmls :
print
print num,content